﻿using StockholmsStad.Data.Interfaces;
using System;
using StockholmsStad.Runtime.Serialization.DataContract.Enums;

namespace StockholmsStad.Data.Context
{
    ///<summary>
    /// Fabrik för att skapa databascontext som kan användas i businesslagret
    ///</summary>
    public class ContextFactory : IContextFactory
    {
        /// <summary>
        /// Skapar ett datacontext 
        /// </summary>
        /// <param name="useTransaction"></param>
        /// <param name="userRole">Den inloggade användarens roll, avgör huruvida databasen ska köras med
        /// läs- eller skrivrättigheter. </param>
        /// <returns></returns>
        public IDataContext GetContext(bool useTransaction, UserRole userRole)
        {
            return new DataContext(useTransaction, true, userRole);
        }

        /// <summary>
        /// Skapar ett datacontext 
        /// </summary>
        /// <param name="useTransaction"></param>
        /// <param name="completeTransaction"></param>
        /// <param name="userRole">Den inloggade användarens roll, avgör huruvida databasen ska köras med
        /// läs- eller skrivrättigheter. </param>
        /// <returns></returns>
        [Obsolete("Should only be used for testing")]
        public IDataContext GetContext(bool useTransaction, bool completeTransaction, UserRole userRole)
        {
            return new DataContext(useTransaction, completeTransaction, userRole);
        }
    }
}